package netty.inoutbandhandler;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

/**
 * Created by IntelliJ
 * Author:熊磊
 */
public class MyByteToLongDecoder extends ByteToMessageDecoder {
    /**
     *  decode 方法 会根据接收的数据重复调用多次,知道确定没有新的数据添加到list
     *  或者是bytebuf没有更多的可读字节为止
     *  list 会传给 channelinboundhandler 处理 且也会调用多次
     * @param ctx  上下文对象
     * @param byteBuf  入站的bytebuf
     * @param list  list集合 , 将解码后的数据传给下一个handler处理
     * @throws Exception
     */
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List<Object> list) throws Exception {
        if (byteBuf.readableBytes()>=8){
            System.out.println("MyByteToLongDecoder decode 被调用");
            list.add(byteBuf.readLong());
        }
    }
}
